Uno de los controles estrella que incorporó la versión 4.0 de PCI DSS fue la protección contra ataques de e-skimming a través de los requisitos 6.4.3 y 11.6.1. Este control fue la respuesta del PCI SSC ante la masificación de este tipo de ataques en años anteriores. En este artículo se describirán las distintas alternativas técnicas para implementarlo.

Introducción

En junio de 2008, Ticketmaster sufrió un incidente de seguridad que afectó a cerca de 40.000 clientes incluyendo nombres, direcciones, correos electrónicos, números telefónicos y detalles de pago, incluyendo datos de tarjetas. Dicho incidente tuvo origen en un proveedor de servicios de chatbot (Inbenta Technologies) que había sido comprometido previamente.  Debido a que los componentes de este servicio de chatbot eran cargados de forma camuflada en las páginas de captura de datos de tarjetas cuando se realizaban pagos, los delincuentes pudieron capturar y exfiltrar esta información sensible sin ser detectados durante varios meses.

Ataques similares fueron identificados en las páginas de comercio electrónico de British Airways, Hanna Anderson, Snowflake y muchos otros sitios web que, en su mayoría, ejecutaban versiones vulnerables de Magento.

Copia de las 22 líneas de código que se inyectaron en el sitio web de British Airways para exfiltrar información confidencial

Todos estos ataques tenían un patrón de operación similar:

  • Ataque a sitios web de comercio electrónico con tráfico masivo pertenecientes a empresas muy reconocidas.
  • Uso de automatización para optimizar los tiempos de infección en sitios vulnerables.
  • Utilización de técnicas de inyección de código y técnicas de ofuscación para crear formularios de pago falsos o modificar la lógica en la captura y envío de datos en formularios existentes, en donde la operación normal del sitio afectado no se ve comprometida, con el fin de garantizar persistencia al delincuente.
  • Activación de tareas de reinfección para no perder el control de los sitios comprometidos.
  • Ataques a proveedores de servicios y componentes externos (como librerías, código JavaScript, etc.) para comprometerlos y, posteriormente, cargar los componentes comprometidos en los sitios web de sus clientes (supply chain attacks).
  • El foco de los ataques se encontraba en los datos de tarjetas de pago.

Debido a la similaridad en su operación con los ataques de skimming físico (en donde los delincuentes manipulan las interfaces de lectura de datos de tarjetas físicas de cajeros electrónicos y terminales de pago para leer y copiar la información de la banda magnética o del chip de una tarjeta), estos ataques se denominaron e-skimming, digital skimming, web skimming o formjacking, ataques del lado del cliente (client-side attacks) en donde los atacantes inyectan código malicioso en sitios web de comercio electrónico para comprometer información confidencial (típicamente datos de tarjetas) ingresada por los usuarios en las páginas de pago (checkout) u otros formularios en línea sin que el usuario afectado sea consciente del ataque.

Los ciberdelincuentes que usaban estas técnicas (activos desde 2014) se catalogaron bajo la marca “MageCart”, ya que muchos de sus ataques fueron dirigidos hacia plataformas vulnerables de comercio electrónico que ejecutaban Magento.

Con el fin de protegerse de dichos ataques, se recomienda la implementación de las siguientes medidas:

  • Identificar todos los componentes activos (JavaScript y ActiveX) que se ejecuten en el sitio web.
  • Establecer relaciones de confianza con los proveedores de componentes activos.
  • Hasta donde fuera posible, ejecutar las instancias de componentes activos de forma local en vez de invocarlas remotamente.
  • Implementar encabezados HTTP Content-Security-Policy (CSP), que ofrecen una capa adicional de protección contra ataques de cross-site scripting (XSS), clickjacking y otros ataques de inyección de código.
  • Mantener actualizados el software base y todas las librerías y componentes que hacen parte de un sitio de comercio electrónico.

Enfoque de PCI DSS: Requisitos 6.4.3 y 11.6.1

PCI DSS version 4.0 incorporó dos requisitos parta la protección de ataques de e-skimming:

Requisito 6.4.3:

  • Implementar un método para confirmar que cada script cargado y ejecutado en el navegador del cliente está autorizado.
  • Asegurar la integridad de cada script.
  • Mantener un inventario de todos los scripts junto con su justificación de uso por escrito, ya sea por razones técnicas o de negocio.

Este requisito se aplica a todos los scripts cargados desde el entorno de la entidad y a los scripts cargados desde terceras y cuartas partes.

Requisito 11.6.1:

Desplegar un mecanismo de detección de cambios y de manipulación para:

  • Alertar al personal si se detectan modificaciones no autorizadas de
    • Encabezados de seguridad (HTTP headers) con impacto en la seguridad
    • Contenido de scripts recibidos por el navegador del usuario durante el proceso de pago
  • Dichos mecanismos deben estar configurados para evaluar los encabezados HTTP y las páginas de pago.
  • Estas funciones deben ejecutarse de forma semanal o periódica (la entidad puede definir la frecuencia a través de un análisis de riesgos focalizado).

Estos controles son obligatorios a partir del 1 de abril de 2025.

Opciones de implementación

A pesar de que no se exige la implementación de una solución en particular, en términos técnicos se pueden implementar estos controles a través de cuatro (4) enfoques distintos:

Opción 1: Content Security Policy (CSP) y Subresource Integrity (SRI)

Content Security Policy (CSP) y Subresource Integrity (SRI) son especificaciones de seguridad del WC3 soportadas por todos los navegadores web actuales, que permiten añadir funcionalidades adicionales de seguridad para limitar las fuentes de contenido activo (JavaScript) y contenido externo como CSS en su sitio web.

Content Security Policy (CSP) es un encabezado de respuesta de HTTP (HTTP response header) o meta tag que soportan los navegadores actuales para optimizar su seguridad a través de la restricción de URLs desde las cuales se pueden cargar contenido (incluyendo proveedores externos).

Content-Security-Policy: default-src 'self'; img-src 'self' cdn.example.com;

En este caso, con esta regla se permite la carga de imágenes, fuentes, hojas de estilo en cascada y la ejecución de contenido activo (JavaScript) desde el mismo dominio desde el cual se solicita el contenido (‘self’) y también se permite la carga de imágenes desde el dominio cdn.example.com.

Subresource Integrity (SRI) es una especificación del WC3 que les permite a los navegadores web verificar que los contenidos cargados (incluyendo los que provienen de terceros) no han sido manipulados o cambiados sin autorización a través del uso de la comparación de hashes. Es necesario estipular de forma explícita los hashes de cada componente activo para que la comparación sea efectiva.

<script src="https://example.com/example-framework.js" integrity="sha384-Li9vy3DqF8tnTXuiaAJuML3ky+er10rcgNR/VqsVpcw+ThHmYcwiB1pbOxEbzJr7" crossorigin="anonymous"></script>

Cuando se usa CSP/SRI se requiere la implementación de los siguientes pasos:

  • Identificación de los scripts y contenido externo que se carga y ejecuta en el navegador del usuario: Para esta tarea, se puede configurar una política de CSP restrictiva con el flag Report-Only en donde se le notifica al desarrollador todos los componentes solicitados y sus URLs.
  • Revisión y justificación de todo el contenido cargado: El siguiente paso es la revisión manual y la justificación de cada contenido.
  • Creación de políticas: Una vez identificados los componentes aprobados, se debe autorizarlos vía CSP o SRI mediante sus hashes.
  • Revisión continua de logs y notificaciones generadas por las políticas implementadas
VentajasDesventajas
Se tiene un control completo y detallado de todo el contenido activo que se ejecuta en las páginas de pago de la entidad.Tareas manuales: Debido a la alta dependencia de acciones manuales para la actualización de políticas CSR/SRI, se requiere una monitorización continua de cualquier cambio en los componentes para actualizar sus hashes y remplazarlos en las políticas aplicadas.
Complejidad en la autorización de scripts: Dependiendo de la cantidad de componentes que sean cargados desde terceros, la actualización de políticas de CSP/SRI puede requerir bastante tiempo y esfuerzo
CSP/SRI no proveen funcionalidades para la monitorización de la integridad de los encabezados HTTP.

Ejemplos adicionales de implementación de CSP y SRI para el cumplimiento de PCI DSS se pueden encontrar en estas páginas:

How can CSP help meet PCI DSS 4.0 Compliance Requirements?

OWASP Content Security Policy Cheat Sheet

OWASP Third Party JavaScript Management Cheat Sheet

Opción 2: Monitorización web sin agente (agentless)
Este tipo de soluciones, también llamadas sin agente (agentless) o synthetic users (bots) suelen emular las interacciones del navegador web de un usuario y analizar todo el contenido que ha sido provisto desde una página web en particular.

VentajasDesventajas
No requiere ningún cambio en el sitio web a monitorizarSu ejecución suele ser programada, de tal manera que se pueden presentar ventanas de tiempo en las que el contenido malicioso puede no ser detectado.
Puede monitorizar todo el flujo operativo de una sesión, como si se tratara de un usuario realSu ejecución es más lenta, ya que consume más recursos
Su forma de trabajar es detectiva, no tiene forma de ejecutar acciones correctivas ante la detección de comportamiento malicioso.

Ejemplos de soluciones que implementan este enfoque:

Opción 3: Monitorización web con agente
En la monitorización con agente se instala/invoca un componente confiable (agente) en la página web del servidor a monitorizar. Este agente (que se cargará en el navegador del usuario) se encargará de supervisar en tiempo real cualquier cambio que sea realizado en los componentes cargados de las páginas monitorizadas y analizar su comportamiento, pudiendo actuar de forma detectiva ante acciones no autorizadas (client-side monitoring).

VentajasDesventajas
El despliegue de agentes es sencillo, realizado a través de invocaciones JavaScript.La integración suele implicar el despliegue de líneas de código adicionales en los sitios web a proteger.
Dependiendo de la solución, se puede monitorizar también los encabezados HTTP.Dependiendo de la solución, el agente solo podrá informar de los resultados de la monitorización, sin la capacidad de «bloquear» el contenido malicioso.
Monitoriza el comportamiento de cada script durante su ejecución.Este tipo de soluciones suelen tener muchos falsos positivos y requiere de afinamiento manual.

Ejemplos de soluciones que implementan este enfoque:

Opción 4: Uso de proxies

A diferencia de las soluciones anteriores, las soluciones basadas en proxies suelen interceptar el tráfico entre el servidor web y el navegador del usuario, revisando el contenido transmitido y detectando cualquier tipo de cambio ANTES de que el contenido sea distribuido al usuario final. Algunas de estas soluciones se integran con plataformas de redes de distribución de contenido (Content Delivery Network – CDN) de tal manera que puede tener el control total sobre los flujos del tráfico, pudiendo bloquear el contenido malicioso ANTES de que sea distribuido al cliente final.

VentajasDesventajas
No requiere instalación ni modificaciones en el servidor web a protegerEste tipo de soluciones suelen apoyarse en políticas CSP/SRI, por lo que es necesario que el administrador de la solución conozca el funcionamiento de estas especificaciones.
Se integra con otras herramientas como módulos de WAF, detección antimalware, soluciones de caché, etc.Necesita tareas de afinamiento.
Si su despliegue está vinculado a un CDN, se añade una capa extra de disponibilidad.No protege interfaces o secciones del sitio web que no estén detrás del servicio de proxy.

Ejemplos de soluciones que implementan este enfoque:

Conclusión

Con los ataques de e-skimming/formjacking al alza, es imprescindible que los sitios de comercio electrónico que capturan datos de tarjetas desplieguen controles detectivos y reactivos orientados hacia la detección de código activo malicioso (JavaScript principalmente) que se pueda cargar en el navegador del usuario final. Estos controles deben validar la integridad de los scripts y los encabezados HTTP autorizados y denegar/reportar cualquier comportamiento sospechoso.

Dependiendo de la complejidad del sitios web de comercio electrónico a proteger, la cantidad de tráfico a ser analizado, la periodicidad en la que estas validaciones deben ser realizadas y la carga adicional en el desempeño de la página web, las entidades pueden elegir entre varias opciones de implementación para lograr el cumplimiento con los controles 6.4.3 y 11.6.1 de PCI DSS v4.0, que entran en vigor a partir del 1 de abril de 2025.

Posted by David Acosta

Qualified Security Assessor (QSA) para PCI DSS, PCI PIN, PCI 3DS, P2PE y PCI TSP. CISSP, CISA, CISM, CRISC, C|EH, C|HFI.

Deja un comentario